package cn.agiledata.bank.audit.dao;

import java.util.Date;

import cn.agiledata.bank.audit.logic.AuditStatus;
import cn.agiledata.bank.hibernateBean.AuditOperandType;
import cn.agiledata.bank.hibernateBean.AuditOperation;
import cn.agiledata.bank.hibernateBean.HistoryAuditOperation;
import cn.agiledata.bank.hibernateBean.RecentAuditOperation;
import cn.agiledata.bank.hibernateBean.UserInfo;

/**
 * @author 马贤波
 * 
 */
public interface IAuditOperationDao {

    public RecentAuditOperation getRecentAuditOperation(
            AuditOperandType auditOperandType, long auditOperandId);

    public HistoryAuditOperation[] getHistoryAuditOperations(
            AuditOperandType auditOperandType, long auditOperandId);

    public void saveOrUpdateAuditOperation(AuditOperation auditOperation);

    public HistoryAuditOperation[] getHistoryAuditOperations(
            AuditOperandType auditOperandType, AuditStatus[] postStatuses,
            UserInfo[] users, Date beginAuditTime, Date endAuditTime,
            int beginIndex, int maxTotal);

    public long getHistoryAuditOperationsTotal(
            AuditOperandType auditOperandType, AuditStatus[] postStatuses,
            UserInfo[] users, Date beginAuditTime, Date endAuditTime);

    public RecentAuditOperation[] getAuditingRecentAuditOperations(
            AuditOperandType[] auditOperandTypes, int beginIndex, int maxTotal);
}
